package com.urbane.generator.controller;

import com.urbane.generator.model.entity.GenDataSource;
import com.urbane.generator.service.GenDataSourceService;
import jakarta.annotation.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/gen-datasource")
public class GenDatasourceController {

    @Resource
    private GenDataSourceService genDatasourceService; // 注入 GenDatasourceService，用于处理业务逻辑

    /**
     * 查询所有数据源配置
     *
     * @return 数据源配置列表
     */
    @GetMapping("/list")
    public ResponseEntity<List<GenDataSource>> list() {

        return ResponseEntity.ok(GenDataSourceService.list()); // 调用 Service 层方法获取所有数据源配置
    }

    /**
     * 根据 ID 查询数据源配置
     *
     * @param id 数据源的主键 ID
     * @return 单个数据源配置对象
     */
    @GetMapping("/{id}")
    public ResponseEntity<GenDataSource> getById(@PathVariable Long id) {
        return ResponseEntity.ok(GenDataSourceService.getById(id)); // 根据 ID 获取数据源配置
    }

    /**
     * 新增数据源配置
     *
     * @param datasource 数据源配置对象
     * @return 操作结果（成功或失败）
     */
    @PostMapping("/save")
    public ResponseEntity<String> save(@RequestBody GenDataSource datasource) {
        boolean result = GenDataSourceService.save(datasource); // 调用 Service 层方法保存数据源配置
        return result ? ResponseEntity.ok("保存成功") : ResponseEntity.status(500).body("保存失败");
    }

    /**
     * 更新数据源配置
     *
     * @param datasource 数据源配置对象
     * @return 操作结果（成功或失败）
     */
    @PutMapping("/update")
    public ResponseEntity<String> update(@RequestBody GenDataSource datasource) {
        boolean result = GenDataSourceService.updateById(datasource); // 调用 Service 层方法更新数据源配置
        return result ? ResponseEntity.ok("更新成功") : ResponseEntity.status(500).body("更新失败");
    }

    /**
     * 删除数据源配置
     *
     * @param id 数据源的主键 ID
     * @return 操作结果（成功或失败）
     */
    @DeleteMapping("/{id}")
    public ResponseEntity<String> delete(@PathVariable Long id) {
        boolean result = GenDataSourceService.removeById(id); // 调用 Service 层方法删除数据源配置
        return result ? ResponseEntity.ok("删除成功") : ResponseEntity.status(500).body("删除失败");
    }

}